package eteam.aps.service;

import eteam.aps.common.helper.JsonPage;
import eteam.aps.model.entity.Worksheet;
import eteam.aps.model.vo.WorksheetVo;
import eteam.aps.systeminterface.model.vo.QueryInfoVo;
import eteam.aps.systeminterface.model.vo.Worksheets;

import java.util.List;
import java.util.Map;

/**
 * 单据流水号相关业务接口
 *
 * @author WMT
 * @Date 2023/2/17 14:08
 */
public interface WorksheetService {

    /**
     * 根据单别添加单据流水号
     * @param worksheet 新增数据
     * @return 受影响的行数
     */
    int insert(Worksheet worksheet);

    /**
     * 根据fId物理删除订单流水号
     * @param fId fId
     * @return 受影响的行数
     */
    int delete(String fId);

    /**
     * 修改订单流水号数据
     * @param worksheet 修改数据
     * @return 受影响的行数
     */
    int update(Worksheet worksheet);

    /**
     * 分页查询所有订单流水号
     * @param map 查询条件
     * @param page 当前页数
     * @param pageSize 每页个数
     * @return 订单流水号列表
     */
    JsonPage<WorksheetVo> selectAll(Map<String,Object> map, int page, int pageSize);

    /**
     * 根据字典类别名称查询单据类别列表
     * @param fDdcName 字典类别名称
     * @return 单据类别列表
     */
    List<QueryInfoVo> selectTypeByOrder(int order);

    /**
     * 根据fId查询单据流水号详情
     * @param fId fId
     * @return 单据详情
     */
    WorksheetVo selectDetails(String fId);

    /**
     * 根据单别编号查询单据前缀
     * @param sheetCode 单据编号
     * @return 单据前缀
     */
    Worksheets selectSheetPrefix(String sheetCode);

    /**
     * 根据单据类型查询字典编号、名称
     * @return 字典编号、名称
     */
    List<QueryInfoVo> selectDdByWorksheetType();

    /**
     * 根据系统类别统计单据性质编号总数
     * @param map 查询条件
     * @return 总数
     */
    int selectCountWorksheetCode(Map<String,Object> map);

    /**
     * 根据系统类别统计单据性质名称总数
     * @param map 查询条件
     * @return 总数
     */
    int selectCountWorksheetName(Map<String,Object> map);

    /**
     * 根据名称获取编号
     * @param name
     * @return
     */
    QueryInfoVo selectCodeByWorksheetName(String name);

    QueryInfoVo selectNameByCode(String code);
}
